2.4 路径转换器
在上面的例子中,我们使用article/<year>的方式来匹配动态路由中的变量year, 然后在视图函数中就会对应一个同名的形参year,这个参数的类型是数字还是字符串?
这种形式拿到的形参,他们的类型都是字符串,并且有个特别的名词来形容这种取值的方式, 他就是路径转换器(path converter)。路径转换器默认都会转为字符串。
Django内置提供了5个路径转换器,最常用应该是int
转换器 说明
str 默认的转换器,匹配除了斜杠(“/”)之外的任何非空字符串
int 匹配0和正整数
slug 匹配ASCII字母、数字、连字符或下划线组成的任何字符串
uuid 匹配为UUID的字符串,例如:075194d3-6885-417e-a8a8-6c931e272f00
path 匹配任何非空字符串,包括斜杠(“/”)。 可以用于捕获URL中的路径部份,包括斜杠
def year_archive(requeet,year): # 传入动态URL(yaer,month)
return HttpResponse( "精忠报国" ) #网面显示的是字符精忠报国“
urlpatterns = [
path( 'admin/' , admin.site.urls),
path( 'hello' , hello),
# path('ariticles/2023', special_case_2023), #将位置往前置
path ( 'ariticles/ < int:year>' , year_archive ) , # int 将参数定义为正整数或0,如果不定义,则默认为字符串类型
]
def filepath(requeet,fp): # 传入动态URL(yaer,month)
return HttpResponse(fp) #网面显示的是字符精忠报国“
urlpatterns = [
path( 'admin/' , admin.site.urls),
path( 'hello' , hello),
# path('ariticles/2023', special_case_2023), #将位置往前置
path( 'ariticles/ <path:fp >' , filepath) ,
# fp可以是abc/ppt/www/a.txt
]